package are.web;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

public class ManejadorTransformador {

	private db conexion = null;
	private Transformador trafo;
	
	
	public ManejadorTransformador(db conexion) {
		super();
		this.conexion = conexion;
		this.trafo = new Transformador();
	}
	public ManejadorTransformador(db conexion, Transformador trafo) {
		super();
		this.conexion = conexion;
		this.trafo = trafo;
	}
	public db getConexion() {
		return conexion;
	}
	public void setConexion(db conexion) {
		this.conexion = conexion;
	}
	

	public Transformador getTrafo() {
		return trafo;
	}
	public void setTrafo(Transformador trafo) {
		this.trafo = trafo;
	}
	public boolean add() throws SQLException{
		boolean result = false;

			String sql = "insert into transformador (codigo,matricula,potencia,fases," +
					"serie,placa_tecnica,fecha_registro,recurso_registro," +
					"tipo_registro,latitud,longitud,valvula) values(?,?,?,?,?,?,sysdate(),?,?,?,?,?)";
			java.sql.PreparedStatement pst = conexion.getConnection().prepareStatement(sql);
			pst.setString(1, trafo.getCodigo());
			pst.setString(2, trafo.getMatricula());
			pst.setString(3, trafo.getPotencia());
			pst.setString(4, trafo.getFase());
			pst.setString(5, trafo.getSerie());
			pst.setString(6, trafo.getPlaca_tecnica());
			pst.setString(7, trafo.getRecurso());
			pst.setString(8, trafo.getTipo());
			pst.setString(9, trafo.getLatitud());
			pst.setString(10, trafo.getLongitud());
			pst.setString(11, trafo.getValvula());
			
			if (conexion.Update(pst) > 0) {
				conexion.Commit();
				result = true;
			}
			
		
		return result;
	}
	
	public boolean update(String key) throws SQLException{
		boolean result = false;

			String sql = "update transformador set codigo=?,matricula=?,potencia=?,fases=?," +
					"serie=?,placa_tecnica=?,recurso_registro=?," +
					"tipo_registro=?,latitud=?,longitud=?,valvula=? where codigo=?";
			
			java.sql.PreparedStatement pst = conexion.getConnection().prepareStatement(sql);
			pst.setString(1, trafo.getCodigo());
			pst.setString(2, trafo.getMatricula());
			pst.setString(3, trafo.getPotencia());
			pst.setString(4, trafo.getFase());
			pst.setString(5, trafo.getSerie());
			pst.setString(6, trafo.getPlaca_tecnica());
			pst.setString(7, trafo.getRecurso());
			pst.setString(8, trafo.getTipo());
			pst.setString(9, trafo.getLatitud());
			pst.setString(10, trafo.getLongitud());
			pst.setString(11, trafo.getValvula());
			pst.setString(12, key);
			
			if (conexion.Update(pst) > 0) {
				conexion.Commit();
				result = true;
			}
			
		return result;
	}
	public boolean remove(String key) throws SQLException {
		boolean result = false;

			String sql = "delete from transformador where codigo=?";
			java.sql.PreparedStatement pst = conexion.getConnection().prepareStatement(sql);
			pst.setString(1,key);
			if (conexion.Update(pst) > 0) {
				conexion.Commit();
				result = true;
			}
			

		return result;	
	}
	
	
	public boolean exist(String key) throws SQLException {
		boolean result = false;

			String sql = "select codigo from transformador where codigo = ?";
			java.sql.PreparedStatement pst = conexion.getConnection().prepareStatement(sql);
			pst.setString(1,key);
			ResultSet rs = conexion.Query(pst);
			if (rs.next()) {
				result = true;
			}
			rs.close();
			
		
		return result;	
	}
	
	public boolean Find(String key) throws SQLException {
		boolean result = false;

			String sql = "select * from transformador where codigo=?";
			java.sql.PreparedStatement pst = conexion.getConnection().prepareStatement(sql);
			pst.setString(1,key);
			ResultSet rs = conexion.Query(pst);
			if (rs.next()) {
				trafo= new Transformador();
				trafo.setCodigo(rs.getString("codigo"));
				trafo.setMatricula(rs.getString("matricula"));
				trafo.setPotencia(rs.getString("potencia"));
				trafo.setFase(rs.getString("fases"));
				trafo.setSerie(rs.getString("serie"));
				trafo.setPlaca_tecnica(rs.getString("placa_tecnica"));
				trafo.setTipo(rs.getString("tipo_registro"));
				trafo.setRecurso(rs.getString("recurso_registro"));
				trafo.setLatitud(rs.getString("latitud"));
				trafo.setLongitud(rs.getString("longitud"));
				trafo.setFecha(rs.getString("fecha_registro"));
				trafo.setValvula(rs.getString("valvula"));
				result = true;
			}
			rs.close();
			
		return result;	
	}
	
	
	public ArrayList<Transformador> list() throws SQLException {
		ArrayList<Transformador> trafos = new ArrayList<Transformador>();
		
			String sql = "select * from transformador order by codigo";
			ResultSet rs  = conexion.Query(sql);
			while(rs.next()) {
				Transformador trafo = new Transformador();
				trafo.setCodigo(rs.getString("codigo"));
				trafo.setMatricula(rs.getString("matricula"));
				trafo.setPotencia(rs.getString("potencia"));
				trafo.setFase(rs.getString("fases"));
				trafo.setSerie(rs.getString("serie"));
				trafo.setPlaca_tecnica(rs.getString("placa_tecnica"));
				trafo.setTipo(rs.getString("tipo_registro"));
				trafo.setRecurso(rs.getString("recurso_registro"));
				trafo.setLatitud(rs.getString("latitud"));
				trafo.setLongitud(rs.getString("longitud"));
				trafo.setFecha(rs.getString("fecha_registro"));
				trafo.setValvula(rs.getString("valvula"));
				trafos.add(trafo);
			}
			rs.close();
		
		return trafos;
	}
	
	
	
	public ArrayList<Transformador> list(String filtro) throws SQLException {
			if (filtro.isEmpty()) {
				throw new SQLException("Cadena de filtro no puede estar vacia");
			}
			
			ArrayList<Transformador> trafos = new ArrayList<Transformador>();

			String sql = "select * from transformador ";
			sql += " where " + filtro ;		
			sql += " order by codigo";
			ResultSet rs  = conexion.Query(sql);
			while(rs.next()) {
				Transformador trafo = new Transformador();
				trafo.setCodigo(rs.getString("codigo"));
				trafo.setMatricula(rs.getString("matricula"));
				trafo.setPotencia(rs.getString("potencia"));
				trafo.setFase(rs.getString("fases"));
				trafo.setSerie(rs.getString("serie"));
				trafo.setPlaca_tecnica(rs.getString("placa_tecnica"));
				trafo.setTipo(rs.getString("tipo_registro"));
				trafo.setRecurso(rs.getString("recurso_registro"));
				trafo.setLatitud(rs.getString("latitud"));
				trafo.setLongitud(rs.getString("longitud"));
				trafo.setFecha(rs.getString("fecha_registro"));
				trafo.setValvula(rs.getString("valvula"));
				trafos.add(trafo);
			}
			rs.close();
		
		return trafos;	
	}
	
	
}